package hunternif.mc.atlas.client; import hunternif.mc.atlas.util.AbstractJSONConfig; import hunternif.mc.atlas.util.Log; import java.io.File; import java.util.Map.Entry; import java.util.PriorityQueue; import java.util.Queue; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonPrimitive; /** * Saves texture set names with the lists of texture variations. */ @SideOnly(Side.CLIENT) public class TextureSetConfig extends AbstractJSONConfig<TextureSetMap> { private static final int VERSION = 1; public TextureSetConfig(File file) { super(file); } public int currentVersion() { return VERSION; } @Override protected void loadData(JsonObject json, TextureSetMap data, int version) { for (Entry<String, JsonElement> entry : json.entrySet()) { String name = entry.getKey(); JsonArray array = entry.getValue().getAsJsonArray(); ResourceLocation[] textures = new ResourceLocation[array.size()]; for (int i = 0; i < array.size(); i++) { String path = array.get(i).getAsString(); textures[i] = new ResourceLocation(path); } data.register(new TextureSet(name, textures)); Log.info("Loaded texture set %s with %d custom texture(s)", name, textures.length); } } @Override protected void saveData(JsonObject json, TextureSetMap data) { // Sort keys alphabetically: Queue<TextureSet> queue = new PriorityQueue<>(data.getAllNonStandardTextureSets()); while (!queue.isEmpty()) { TextureSet set = queue.poll(); JsonArray paths = new JsonArray(); for (ResourceLocation texture : set.textures) { paths.add(new JsonPrimitive(texture.toString())); } json.add(set.name, paths); } } }